AWS Fault Injection SimulatorでEC2のCPU負荷テストを実行してみる

AWS Fault Injection SimulatorでEC2のCPU負荷テストを実行してみる

AWS Fault Injection SimulatorでAWSFIS-Run-CPU-Stressシナリオを実行してみました
Clock Icon2024.09.03

はじめに

こんにちは、アノテーションのなかたです。
今回はAWS Fault Injection SimulatorでEC2インスタンスに負荷テストシナリオを実行してみました。

AWS Fault Injection Simulator(AWS FIS)とは?

アプリケーションやアーキテクチャの回復性や障害性の向上を図るため、意図的に障害をシミュレーションすることができるサービスです。
次のようなシナリオが事前に用意されています。

  • EC2インスタンスのCPU使用率負荷
  • AZの電源遮断

https://docs.aws.amazon.com/ja_jp/fis/latest/userguide/scenario-library-scenarios.html

AWSFIS-Run-CPU-Stressシナリオ

このシナリオでは、stress-ngという負荷テストツールを用いて、EC2インスタンスに高い負荷をかけます。

前提条件

対象のEC2インスタンスには、以下の要件が必要です。

スクリーンショット 2024-09-02 13.59.36

  • インストールされているSSMエージェント
    SSMエージェントがプリインストールされているAmazon Linux 2023というAMIを使用します。
    そのため、手動でのインストールは不要です。

  • SSMManagedInstanceCoreポリシー
    AWS FISがSessionManagerを利用してテストを行うための前提です。
    事前にIAMロールを作成しておきます。

  • stress-ngツール
    パブリックサブネットにEC2インスタンスを配置し、インターネットを介したインストール方法を採用します。

  • Ec2StressCpuタグ
    EC2インスタンスに付与する指定のタグと値を付与します。

  • FIS実行ロール
    今回は、自動作成されるロールを使用します。

https://docs.aws.amazon.com/ja_jp/fis/latest/userguide/fis-tutorial-run-cpu-stress.html

やってみる

1. IAMロールの作成

事前にSSMManagedInstanceCoreポリシーが付与されたIAMロールを作成しておきます。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html

2. 実験用のEC2インスタンス作成

次のようにタグをつけます。
キー:Ec2StressCpu
値:Allowed
スクリーンショット 2024-09-02 11.41.57
IAMインスタンスプロフィールに先ほど作成したIAMロールを割り当てます。
スクリーンショット 2024-09-02 11.42.09
インスタンスを起動します。

3. 実験テンプレートの作成

シナリオからテストを作成を選択します。
スクリーンショット 2024-09-02 11.22.18
EC2ストレス:CPUを選択し、シナリオ使用してテンプレートを作成というボタンを選択します。
スクリーンショット 2024-09-02 11.22.39
このAWSアカウントを選択します。
スクリーンショット 2024-09-02 11.43.55
サービスアクセスにて、実験テンプレート用の新しいロールを作成するを選択します。
スクリーンショット 2024-09-02 11.45.18
またタグの設定において、タグの値がデフォルトで日本語で自動挿入されていました。
しかし、エラー表示されていたので適当な名前に変更します。
実験テンプレートを作成ボタンを選択します。
スクリーンショット 2024-09-02 11.51.54
実験テンプレートの作成が完了しました。
スクリーンショット 2024-09-02 11.52.38

4. 実験の開始

ターゲットのタブのプレビューを作成ボタンを選択します。
スクリーンショット 2024-09-02 11.52.46
これにより、対象となるインスタンスを事前に確認することが可能です。
スクリーンショット 2024-09-02 11.53.08
それでは実験を開始します。
上部の実験を開始ボタンを選択します。
スクリーンショット 2024-09-02 11.52.38のコピー
そのまま実験を開始ボタンを選択します。
スクリーンショット 2024-09-02 11.53.37
アクションが開始されました。
スクリーンショット 2024-09-02 11.55.17
15分待機すると、全てのアクションが完了しました。
スクリーンショット 2024-09-02 12.09.15
対象となるEC2インスタンスのCPU使用率メトリクスを確認します。
画像のように、時間をかけて負荷がかかっていることがわかります。
スクリーンショット 2024-09-02 12.10.13
ちなみに、他のメトリクスは以下のようになっていました。
スクリーンショット 2024-09-02 12.12.29

おわりに

AWS FISを利用して、EC2インスタンスのCPU負荷テストを行うことができました。
前提条件をしっかりとクリアすれば、手順であまりつまづくことはない印象でした。
また、今回のシナリオの活用例として、以下の記事が参考になると思います。
https://dev.classmethod.jp/articles/auto-scaling-fis-experiment-via-cloudwatch/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.